iT邦幫忙

2024 iThome 鐵人賽

DAY 20
1

在 CI 流程的最後階段,檢查改動後的資料差異是一個重要步驟。本文將探討為什麼這項檢查如此重要,以及我們如何實現自動化檢查。

為什麼需要檢查資料差異?

人工檢查的局限性

我們先前 CI 流程中的資料檢查主要依賴人力和經驗,包括檢查資料筆數、欄位增減、欄位型態和特定指標等。然而,這種方法存在幾個問題:

  1. 容易遺漏:人為因素可能導致檢查不完全。
  2. 時間壓力:緊急的 PR 可能導致檢查被簡化或忽略。
  3. 耗時耗力:大量改動時,全面檢查需要大量時間和人力。

我們曾在一次 BI 大規模修改 models 時遇到問題。由於改動數量龐大,DE 團隊沒有仔細檢查每張表的欄位型態。結果,一張表的欄位型態變更影響了下游欄位,導致排程出錯。雖然問題被迅速發現並解決,但這次經驗凸顯了自動化檢查的必要性。

自動化檢查的實現

為了解決上述問題,我們決定在每次 CI 中自動檢查資料差異,並生成檢查報告。

檢查項目

我們的檢查項目分為兩大類:

  1. 通用檢查
    • 資料筆數比對
    • 欄位增減檢測
    • 欄位型態變化識別
    • 孤兒物件檢查
  2. 客製化檢查
    • 特定指標變化監控(如銷售額、會員數等)

考慮到開發成本,我們團隊優先實現通用檢查項目。

檢查項目說明

  1. 資料筆數:比對測試環境和正式環境相應表格的資料筆數,計算差異。
  2. 欄位增減:比對兩個環境中相應表格的所有欄位,識別新增或刪除的欄位。
  3. 欄位型態變化:檢查兩個環境中相應欄位的資料類型,標記發生型態變化的欄位。
  4. 孤兒物件:識別存在於 BigQuery 但不在 dbt models 中的物件,這可能是由於 model 重命名後未刪除舊表所致(不刪除可能導致其他使用者使用到舊表)。

實作自動化檢查

我們選擇使用 Python 開發自動化檢查程序,主要基於以下考慮:

  • Python 擁有豐富的套件生態系統,包括支持 dbt、BigQuery 和 git 操作的套件。
  • Python 適合進行數據處理和自動化任務。

在接下來的系列文章中,我們將深入探討實現這些檢查的技術細節。


上一篇
CI/CD:執行異動的 models
下一篇
dbt 自動化檢查 - 架構
系列文
dbt 修煉之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言